from django import template
from datetime import datetime


def my_capfirst(value):
    return value.capitalize()


# 创建一个注册器对象


register = template.Library()
# 将函数注册到注册器对象中
# 第一个‘my_capfirst’是注册的名字，调用的时候用的，第二个是函数名
register.filter('my_capfirst', my_capfirst)


@register.filter('my_date')
def my_date(value):
    """
       过滤器：对文章发布信息进行处理
       1、如果和当前的时间间隔小于1分钟 显示 刚刚
       2、如果大于1分钟小于1小时 显示 xx分钟前
       3、如果大于1小时小于1天   显示xx小时前
       4、如果大于1天小于30天   显示xx天前
       5、如果大于30天显示具体的发布时间
       :param value: 发布时间
       :return: 显示信息
       """
    now = datetime.now()
    # 计算时间间隔 把当前时间减去传进来的文章创建时间
    # 时间差单位 秒
    timestamp = (now - value).total_seconds()
    if timestamp < 60:
        return "刚刚"
    elif 60 < timestamp < 60 * 60:
        # 计算多少分钟
        res = int(timestamp / 60)
        return f'{res}分钟前'
    elif 60 * 60 < timestamp < 60 * 60 * 24:
        res = int(timestamp / (60 * 60))
        return f'{res}小时前'
    elif 60 * 60 * 24 < timestamp < 60 * 60 * 24 * 30:
        res = int(timestamp / (60 * 60 * 24))
        return f'{res}天前'
    else:
        return value.strftime('%Y-%m-%d %H:%M:%S')
